O presente estudo está em fase inicial e visa entender os registros dos acidentes de trânsito no Estado de São Paulo expondo as situações em que eles ocorrem e possibilitando a adoção de estratégias para minimizá-los. Os dados foram obtidos no portal do Movimento Paulista de Segurança no Trânsito (http://www.infosiga.sp.gov.br/Home/Relatorio) e contemplam o período de janeiro/2015 a novembro/2018
library(scales)
library(plotly)
library(dplyr)
library(readr)
library(lubridate)
library(leaflet)
at2015 <- read_delim("https://raw.githubusercontent.com/miqueiaspnasc/eda/master/data/acidentes-transito-2015.csv",
";", escape_double = FALSE, locale = locale(encoding = "ISO-8859-1"),
trim_ws = TRUE)
at2016 <- read_delim("https://raw.githubusercontent.com/miqueiaspnasc/eda/master/data/acidentes-transito-2016.csv",
";", escape_double = FALSE, locale = locale(encoding = "ISO-8859-1"),
trim_ws = TRUE)
at2017 <- read_delim("https://raw.githubusercontent.com/miqueiaspnasc/eda/master/data/acidentes-transito-2017.csv",
";", escape_double = FALSE, locale = locale(encoding = "ISO-8859-1"),
trim_ws = TRUE)
at2018 <- read_delim("https://raw.githubusercontent.com/miqueiaspnasc/eda/master/data/acidentes-transito-2018.csv",
";", escape_double = FALSE, locale = locale(encoding = "ISO-8859-1"),
trim_ws = TRUE)
at <- rbind(at2015, at2016, at2017, at2018)
at %>% mutate(data = dmy(paste('01', at$`Mês Óbito`, at$`Ano Óbito`))) %>%
mutate(Trimestre = quarter(data)) -> at
at %>% mutate(lat = as.numeric(gsub(',', ".", at$`LAT_(geo)`))) -> at
at %>% mutate(lon = as.numeric(gsub(',', ".", at$`LONG_(geo)`))) -> at
at %>% count(`Ano Óbito`) %>%
ggplot(aes(x=`Ano Óbito`, y=n)) + geom_bar(stat='identity', fill='red') +
scale_y_continuous(labels=comma) +
labs(x='Ano', y='Número de Óbitos', title='Óbitos por Ano')
at %>% select(`Ano Óbito`, Trimestre) %>% group_by(`Ano Óbito`) %>% count(Trimestre) %>%
ggplot(aes(x=as.factor(Trimestre), y=n)) + geom_bar(stat='identity', fill='red') +
scale_y_continuous(labels=comma) + facet_grid(.~`Ano Óbito`) + labs(x='Trimestre', y='Número de Óbitos')
at %>% count(data) %>%
ggplot(aes(x=month(data, label=TRUE), y=n)) + geom_bar(stat='identity', fill='red') +
scale_y_continuous(labels=comma) +
labs(x='Mês', y='Número de Óbitos', title='Óbitos por Mês')
at %>% count(data) %>%
ggplot(aes(x=wday(data, label=TRUE), y=n)) + geom_bar(stat='identity', fill='red') +
scale_y_continuous(labels=comma) +
labs(x='Dia', y='Número de Óbitos', title='Óbitos por Dia da Semana')
at %>% count(Turno) %>%
ggplot(aes(x=Turno, y=n)) + geom_bar(stat='identity', fill='red') +
scale_y_continuous(labels=comma) +
labs(x='Turno', y='Número de Óbitos', title='Óbitos por Turno')
at %>% filter(!is.na(lat) & !is.na(lon)) %>% leaflet() %>%
setView(lng=-48, lat=-22.5, zoom=7) %>%
addTiles() %>%
addProviderTiles("CartoDB.Positron") %>%
addScaleBar %>%
addMarkers(~lon, ~lat,
label = ~paste0("<strong>Cidade: </strong>", `Cidade Considerada`,
"<br><strong>Tipo de Acidente: </strong>", `Tipo Acidente`,
"<br><strong>Tipo de Veículo: </strong>", `Tipo Veiculo`) %>% lapply(htmltools::HTML),
clusterOptions = markerClusterOptions())
Muitas informações ainda podem ser extraídas desses registros, mas, como trata-se de um trabalho em desenvolvimento, foram expostos somente alguns pontos para a apresentação de uma visão geral.
Os próximos passos são explorar os incidentes por gênero, faixa etária, cidade, tipo de acidente, via, tipo de veículo, relacionar esses dados com o número de habitantes por cidade (acredito que conseguirei esses dados no IBGE) para chegar a números relativos.